/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package herancapessoa.controles;

import herancapessoa.negocio.Pessoa;
import herancapessoa.negocio.PessoaFisica;
import herancapessoa.negocio.PessoaJuridica;
import herancapessoa.persistencia.PessoaFisicaDAO;
import herancapessoa.persistencia.PessoaJuridicaDAO;
import herancapessoa.utils.HibernateUtil;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;

/**
 *
 * @author Ricky
 */
public class PessoaManager {
    
    
    private static List<PessoaJuridica> pjlControl = null;
    private static List<PessoaFisica> pflControl = null;
    private static List<PessoaJuridica> pjlResult = null;
    private static List<PessoaFisica> pflResult = null;
    private static boolean searchEngineStatus = false;    
    
        public static List<Pessoa> searchByMatch(String match) {
        if (!searchEngineStatus) {
            startSearchEngine();
        }
        List<Pessoa> pl = new ArrayList<Pessoa>();
        /**
         * Este trecho faz a busca separadamente em pessoas jurídicas
         */
        pjlResult = new ArrayList<PessoaJuridica>();
        for (int i = 0;i < pjlControl.size(); i++) {
            if (pjlControl.get(i).getNome().toLowerCase().startsWith(match.toLowerCase(),0)) {
                pl.add(pjlControl.get(i));
            }
        }

        /**
         *  Este trecho faz a busca separadamente em pessoas físicas
         */
        pflResult = new ArrayList<PessoaFisica>();
        for (int i = 0;i < pflControl.size(); i++) {
            if (pflControl.get(i).getNome().toLowerCase().startsWith(match.toLowerCase(),0)) {
                pl.add(pflControl.get(i));
            }
        }        
        
        return pl;
    }
    
    public static void startSearchEngine() {
            Session session = HibernateUtil.getSessionFactory().getCurrentSession();
            session.beginTransaction();
            pjlControl = PessoaJuridicaDAO.getAll(session);
            pflControl = PessoaFisicaDAO.getAll(session);
            session.close();
            searchEngineStatus = true;
    }
}
